
create public database link HR_LINK
connect to HR identified by PUFFINSTUFF
using 'hq';

select * from EMPLOYEE@HR_LINK
where Office='ANNAPOLIS';

create public database link HR_LINK
connect to HR identified by PUFFINSTUFF
using 'hq';

hq = (DESCRIPTION=
       (ADDRESS=
                (PROTOCOL=TCP)
                (HOST=HQ)
                (PORT=1521))
       (CONNECT DATA=
                (SID=loc))))

create public database link HR_LINK
connect to current_user
using 'hq';

select * from EMPLOYEE@HR_LINK

create public database link HR_LINK
connect to HR identified by PUFFINSTUFF
using 'hq';

create public database link HR_LINK
connect to current_user
using 'hq';

create view REMOTE_EMP
as select * from EMPLOYEE@HR_LINK
where Ename=User;

create shared database link HR_LINK_SHARED
connect to current_user
authenticated by HR identified by puffinstuff
using 'hq';

drop database link HR_LINK;

create public database link HR_LINK
connect to HR identified by NEWPASSWORD
using 'hq';

create public database link TRIGGER_LINK
using 'remote1';

create trigger COPY_DATE
after insert on EMPLOYEE
for each row
begin
        insert into EMPLOYEE@TRIGGER_LINK
        values
        (:new.Empno, :new.Ename, :new.Deptno,
        :new.Salary, :new.Birth_Date, :new.Soc_Sec_Num);
end;
/

select  Trigger_Type,
        Triggering_Event,
        Table_Name
   from DBA_TRIGGERS
  where Trigger_Name = 'COPY_DATA';

select Trigger_Body
  from DBA_TRIGGERS
 where Trigger_Name = 'COPY_DATA';

create database link HR_LINK
connect to HR identified by PUFFINSTUFF
using 'hq';

create snapshot EMP_DEPT_COUNT
pctfree 5
tablespace SNAP
storage (initial 100K next 100K pctincrease 0)
refresh complete
       start with SysDate
       next SysDate+7
as select Deptno, COUNT(*) Dept_Count
      from HR.EMPLOYEE@HR_LINK
     group by Deptno;

drop snapshot EMP_DEPT_COUNT;

alter snapshot EMP_DEPT_COUNT pctfree 5;

select
  Name,             /*Nazwa perspektywy migawki*/
  Last_Refresh,     /* Data ostatniego odwieenia*/
  Type,             /*Typ odwieania, uywane przy odwieaniu automatycznym*/
  Query             /*Zapytanie migawki*/
  from DBA_SNAPSHOTS;

DBMS_REFRESH.MAKE
(name IN VARCHAR2
{ list IN VARCHAR2, |
   tab IN DBMS_UTILITY.UNCL_ARRAY,}
 next_date IN DATE,
 interval IN VARCHAR2,
 implicit_destroy IN BOOLEAN := FALSE,
 lax IN BOOLEAN := FALSE,
 job IN BINARY INTEGER := 0,
 rollback_seg IN VARCHAR2 := NULL,
 push_deferred_rpc IN BOOLEAN := TRUE,
 refresh_after_errors IN BOOLEAN := FALSE,
 purge_option IN BINARY_INTEGER := NULL,
 parallelism IN BINARY_INTEGER := NULL,
 heap_size IN BINARY_INTEGER := NULL);

execute DBMS_REFRESH.MAKE
(name => 'emp_group',
 list => 'local_emp, local_dept',
 next_date => SysDate,
 interval => 'SysDate+7');

execute DBMS_REFRESH.CHANGE
(name => 'emp_group',
 next_date => null,
 interval => 'SysDate+3');

execute DBMS_REFRESH.DESTROY(name => 'emp_group');

refresh complete
      start with SysDate
      next SysDate+7

execute DBMS_SNAPSHOT.REFRESH('emp_dept_count', '?');

execute DBMS_SNAPSHOT.REFRESH_ALL;

execute DBMS_REFRESH('emp_group');

create snapshot log on EMPLOYEE
tablespace DATA_2
storage (initial 100K next 50K pctincrease 0)
pctfree 5 pctused 90;

alter snapshot log EMPLOYEE
pctfree 10;

drop snapshot log on EMPLOYEE;

create database link HR_LINK
connect to HR identified by PUFFINSTUFF
using 'hq';

create snapshot EMP_DEPT_COUNT
refresh complete
      start with SYSDATE
      next SYSDATE+7
as select Deptno, COUNT(*) Dept_Count
      from HR.EMPLOYEE@HR_LINK
    group by Deptno;

execute DBMS_SNAPSHOT.PURGE_LOG
(master => 'EMPLOYEE',
 num => 1,
 flag => 'DELETE');

truncate table EMPLOYEE preserve snapshot log;

truncate table EMPLOYEE purge snapshot log;

variable jobno number;
begin
DBMS_JOB.SUBMIT(:jobno, 'myproc', SysDate, SysDate+1);
commit;
end;
/

print jobno

